#-*-coding:utf-8-*-

#1.参考学生信息管理系统设计界面
#2.满足3个以上账号信息
#3.初始化变量，模拟效果

#界面设置：
#------哆啦A梦自动存取款一体机------
#1.账户信息数据源
#2.界面与交互（登录退出、存取款、余额）
#3.登录操作
#4.余额查询
#5.存款操作
#6.取款操作
#7.退出系统
#8.控制台

#导入时间模块，交互功能函数库
import time
from ipywidgets import interact
#1.账户信息数据源
account_data = [
    {'account': '康夫', 'password': '010101', 'deposit': 1500},
    {'account': '大雄', 'password': '001011', 'deposit': 5000},
    {'account': '静香', 'password': '011011', 'deposit': 3500}]

#定义空列表存储当前操作账户信息
account_list = []


#2.界面与交互
def screen_func():
    #显示登陆地时间
    print(time.strftime('%Y-%m-%d %H: %M: %S:',time.localtime()))

    print('*' , '您好，欢迎使用哆啦A梦自动存取款一体机', '*')
    print('{:1} {:13} {:15}' .format('','1.登录','2.余额'))
    print('{:1} {:13} {:15}' .format('','3.存款','4.取款'))
    print('{:1} {:13} {:15}' .format('','5.退出系统', ''))
    print('=' * 42)

    #等待用户选择
    time.sleep(1)


#3.登录操作
def user_login():
    #声明account_list是全局变量
    global account_list
    #用户输入个人信息
    account = input('请输入您的账户名：')
    password = input('请输入您的密码：')
    time.sleep(1)
    print('')
    
    #遍历并使用enumerate()函数枚举账户信息
    for i, account_dict in enumerate(account_data):
        #判断用户信息是否存在
        if account_dict['account'] == account and account_dict['password'] == password:
            #若用户信息正确，将此数据信息添加至account_list
            account_list.append(account_dict)

    #判断列表是否为空，不空即登陆成功
    if account_list != []:
        print('{:5} {:15}' .format('','登陆成功'))
    
    else:
        if input('录入信息有误，是否重新输入？y/n') == 'y':
            user_login()
        

#4.余额查询
def account_balance():
    print(time.strftime('%Y-%m-%d %H: %M: %S:',time.localtime()))
    print('>' * 3, '您的账户余额是{:^6}元' .format(account_list[0]['deposit']))
    print('*' * 20)


#5.存款操作
def deposit_account():
    #定义变量，其值为小数制计数
    money = float(input('请输入存款金额：'))
    #判断输入值非整数重复操作
    if money.is_integer == False:
        print('请输入整数金额')
        deposit_account()
    
    #若输入值是整数计入accoungt_list存款中
    else:
        account_list[0]['deposit'] += money
        print('*' * 5, '您的账户余额是{:^6}元' .format(account_list[0]['deposit']))
        print('*' * 20)


#6.取款操作
def with_draw():
    #定义变量，其值为小数制计数
    money1 = float(input('请输入取款金额：'))
    #判断输入值非整数重复操作
    if money1.is_integer() == False:
        print('请输入整数金额')
        with_draw()

    #判断账户余额是否满足取款范围
    if account_list[0]['deposit'] >= money1:
        account_list[0]['deposit'] -= money1
        print('*' * 5, '您的取款金额是{:^6}元' .format(money1))
        print('*' * 20)

    else:
        print('抱歉，您的余额不足')
        print('*' * 5, '您的账户余额是{:^6}元' .format(account_list[0]['deposit']))
        print('*' * 20)
        interact_sys()


#7.退出系统
def logOut():
    print('*' * 15)
    print('*' * 5, '感谢您的使用，下次再见！','*' * 5)
    print('*' * 15)


#8.交互实现
def interact_sys():
    #调用while死循环
    while True:
        screen_func()
        key = input('请输入服务序号：')
        if key == '1':
            user_login()

        #除序号1、5以外需要判断用户是否登陆    
        elif key == '2':
            if account_list == []:
                print('*' * 5, '请先登录，谢谢', '*' * 5)
            else:
                account_balance()
                input('按回车键返回主菜单')

        elif key == '3':
            if account_list == []:
                print('*' * 5, '请先登录，谢谢','*' * 5)
            else:
                deposit_account()
                input('按回车键返回主菜单')

        elif key == '4':
            if account_list == []:
                print('*' * 5, '请先登录，谢谢', '*' * 5)
            else:
                with_draw()
                input('按回车键返回主菜单')
               
        elif key == '5':
            logOut()
            break

        else:
            input('输入有误，请重新输入')


interact_sys()

#测试界面交互效果
#screen_func()

#测试登陆